package uiMain.menuconsola;

import gestorHotel.Hotel;
import gestorHotel.habitacion.Habitacion;
import gestorHotel.habitacion.Tipo;
import gestorHotel.reserva.LineaReserva;
import gestorHotel.reserva.Reserva;
import gestorHotel.reserva.TipoEstadoReserva;
import gestorHotel.servicios.Minibar;

import java.util.ArrayList;
import java.util.Scanner;

public class OpcionDeMenuConsumoServicio extends OpcionDeMenu {

	public void ejecutar() {
		Scanner in = new Scanner(System.in);
		String h = seleccionarHotel();
		
		Hotel hotel = Main.hoteles.get(h);
		
		Reserva reserva = null;
		for (Reserva r : hotel.getReservas().values()) {
			if (r.getEstado() != TipoEstadoReserva.ACTIVA)
				continue;
			if (!r.getUsuario().equals(Main.usuario.getUsuario()))
				continue;
			reserva = r;
			break;
		}
		
		if (reserva == null) {
			System.out.println("Usted no está alojado en el hotel!");
			return;
		}

		System.out.println("Seleccione la habitación:");
		System.out.println();
		int k = 0;
		ArrayList<Integer> opciones = new ArrayList<Integer>();
		for (LineaReserva linea : reserva.getLineas()) {
			System.out.println((k + 1) + ". " + linea.getHabitacion());
			opciones.add(linea.getHabitacion());
			++k;
		}
		
		int op2 = Integer.parseInt(in.nextLine());
		int hab = hotel.getHabitaciones().get(opciones.get(op2 - 1)).getNumero();
		
		System.out.println("Seleccione el servicio: ");
		k = 0;
		System.out.println((k + 1) + ". Internet"); ++k;
		System.out.println((k + 1) + ". Minutos nacionales"); ++k;
		System.out.println((k + 1) + ". Minutos internacionales"); ++k;
		
		for (Minibar minibar : hotel.getHabitaciones().get(hab).getMinibar()) {
			System.out.println((k + 1) + ". " + minibar.getBebidas()); ++k;
		}
		
		System.out.println();
		System.out.print("Seleccione una opción: ");
		int s = Integer.parseInt(in.nextLine());
		
		System.out.print("Seleccione la cantidad: ");
		int c = Integer.parseInt(in.nextLine());
		
		if (s == 1) {
			int minutos = Main.hoteles.get(h).getHabitaciones().get(hab).getMinutosInternet();
			Main.hoteles.get(h).getHabitaciones().get(hab).setMinutosInternet(minutos + c);
		} else if (s == 2) {
			int minutos = Main.hoteles.get(h).getHabitaciones().get(hab).getMinutosNacionales();
			Main.hoteles.get(h).getHabitaciones().get(hab).setMinutosNacionales(minutos + c);
		} else if (s == 3) {
			int minutos = Main.hoteles.get(h).getHabitaciones().get(hab).getMinutosInternacionales();
			Main.hoteles.get(h).getHabitaciones().get(hab).setMinutosInternacionales(minutos + c);
		} else {
			int cantidad = Main.hoteles.get(h).getHabitaciones().get(hab).getMinibar().get(s - 4).getCantidad();
			Main.hoteles.get(h).getHabitaciones().get(hab).getMinibar().get(s - 4).setCantidad(cantidad + c);
		}
	}

	public String getDescripcion() {
		return "Consumir servicio.";
	}

}
